<!DOCTYPE html>
<html lang="zh-CN">





<head>
  <meta charset="UTF-8">
  <link rel="apple-touch-icon" sizes="76x76" href="/michuanblog/img/favicon.png">
  <link rel="icon" type="image/png" href="/michuanblog/img/favicon.png">
  <meta name="viewport"
        content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no">
  <meta http-equiv="x-ua-compatible" content="ie=edge">
  
  <meta name="theme-color" content="#2f4154">
  <meta name="description" content="Coding">
  <meta name="author" content="胡晗">
  <meta name="keywords" content="">
  <title>Linux常用命令 - 胡晗&#39;s Blog</title>

  <link  rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/css/bootstrap.min.css" />


  <link  rel="stylesheet" href="https://cdn.staticfile.org/github-markdown-css/4.0.0/github-markdown.min.css" />
  <link  rel="stylesheet" href="/michuanblog/lib/hint/hint.min.css" />

  
    <link  rel="stylesheet" href="https://cdn.staticfile.org/highlight.js/10.0.0/styles/github-gist.min.css" />
  

  


<!-- 主题依赖的图标库，不要自行修改 -->

<link rel="stylesheet" href="//at.alicdn.com/t/font_1749284_yg9cfy8wd6.css">



<link rel="stylesheet" href="//at.alicdn.com/t/font_1736178_pjno9b9zyxs.css">


<link  rel="stylesheet" href="/michuanblog/css/main.css" />

<!-- 自定义样式保持在最底部 -->


  <script  src="/michuanblog/js/utils.js" ></script>
<meta name="generator" content="Hexo 4.2.1"></head>


<body>
  <header style="height: 70vh;">
    <nav id="navbar" class="navbar fixed-top  navbar-expand-lg navbar-dark scrolling-navbar">
  <div class="container">
    <a class="navbar-brand"
       href="/michuanblog/">&nbsp;<strong>MiChuan</strong>&nbsp;</a>

    <button id="navbar-toggler-btn" class="navbar-toggler" type="button" data-toggle="collapse"
            data-target="#navbarSupportedContent"
            aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <div class="animated-icon"><span></span><span></span><span></span></div>
    </button>

    <!-- Collapsible content -->
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav ml-auto text-center">
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/michuanblog/">
                <i class="iconfont icon-home-fill"></i>
                首页
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/michuanblog/archives/">
                <i class="iconfont icon-archive-fill"></i>
                归档
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/michuanblog/categories/">
                <i class="iconfont icon-category-fill"></i>
                分类
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/michuanblog/tags/">
                <i class="iconfont icon-tags-fill"></i>
                标签
              </a>
            </li>
          
        
          
          
          
          
            <li class="nav-item">
              <a class="nav-link" href="/michuanblog/about/">
                <i class="iconfont icon-user-fill"></i>
                关于
              </a>
            </li>
          
        
        
          <li class="nav-item" id="search-btn">
            <a class="nav-link" data-toggle="modal" data-target="#modalSearch">&nbsp;&nbsp;<i
                class="iconfont icon-search"></i>&nbsp;&nbsp;</a>
          </li>
        
      </ul>
    </div>
  </div>
</nav>

    <div class="view intro-2" id="background" parallax=true
         style="background: url('/michuanblog/img/default.png') no-repeat center center;
           background-size: cover;">
      <div class="full-bg-img">
        <div class="mask flex-center" style="background-color: rgba(0, 0, 0, 0.3)">
          <div class="container text-center white-text fadeInUp">
            <span class="h2" id="subtitle">
              
            </span>

            
              
  <div class="mt-3 post-meta">
    <i class="iconfont icon-date-fill" aria-hidden="true"></i>
    <time datetime="2020-08-15 17:57">
      2020年8月15日 下午
    </time>
  </div>


<div class="mt-1">
  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-chart"></i>
      4.4k 字
    </span>
  

  
    
    <span class="post-meta mr-2">
      <i class="iconfont icon-clock-fill"></i>
      
      
      54
       分钟
    </span>
  

  
  
</div>

            
          </div>

          
        </div>
      </div>
    </div>
  </header>

  <main>
    
      

<div class="container-fluid">
  <div class="row">
    <div class="d-none d-lg-block col-lg-2"></div>
    <div class="col-lg-8 nopadding-md">
      <div class="container nopadding-md" id="board-ctn">
        <div class="py-5" id="board">
          <div class="post-content mx-auto" id="post">
            
            <article class="markdown-body">
              <h2 id="文件管理"><a href="#文件管理" class="headerlink" title="文件管理"></a>文件管理</h2><h3 id="cat"><a href="#cat" class="headerlink" title="cat"></a>cat</h3><p>cat 命令用于连接文件并打印到标准输出设备上。</p>
<h4 id="语法"><a href="#语法" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">cat [-AbeEnstTuv] [--help] [--version] fileName</code></pre>
<h4 id="参数"><a href="#参数" class="headerlink" title="参数"></a>参数</h4><ul>
<li><strong>-n</strong>：由 1 开始对所有输出的行数编号。</li>
<li><strong>-b</strong>：和 -n 相似，只不过对于空白行不编号。</li>
<li><strong>-s</strong>：当遇到有连续两行以上的空白行，就代换为一行的空白行。</li>
<li><strong>-E</strong> : 在每行结束处显示 $。</li>
<li><strong>-T</strong>: 将 TAB 字符显示为 ^I。</li>
<li><strong>-A</strong>：等价于 -vET。</li>
<li><strong>-e：</strong>等价于”-vE”选项；</li>
<li><strong>-t：</strong>等价于”-vT”选项；</li>
</ul>
<h3 id="chmod"><a href="#chmod" class="headerlink" title="chmod"></a>chmod</h3><p>修改文件权限</p>
<h4 id="语法-1"><a href="#语法-1" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">chmod [-cfvR] [--help] [--version] mode file...</code></pre>
<h4 id="参数-1"><a href="#参数-1" class="headerlink" title="参数"></a>参数</h4><p>mode：权限</p>
<pre><code class="hljs shell">[ugoa...][[+-=][rwxX]...][,...]</code></pre>
<ul>
<li>u 表示该文件的拥有者，g 表示与该文件的拥有者属于同一个群体(group)者，o 表示其他以外的人，a 表示这三者皆是。</li>
<li>+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。</li>
<li><p>r 表示可读取，w 表示可写入，x 表示可执行，X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。</p>
</li>
<li><p>-c : 若该文件权限确实已经更改，才显示其更改动作</p>
</li>
<li>-f : 若该文件权限无法被更改也不要显示错误讯息</li>
<li>-v : 显示权限变更的详细资料</li>
<li>-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)</li>
</ul>
<h3 id="chown"><a href="#chown" class="headerlink" title="chown"></a>chown</h3><p>更改文件所有者</p>
<h4 id="语法-2"><a href="#语法-2" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">chown [-cfhvR] [--help] [--version] user[:group] file...</code></pre>
<h4 id="参数-2"><a href="#参数-2" class="headerlink" title="参数"></a>参数</h4><ul>
<li>user : 新的文件拥有者的使用者 ID</li>
<li>group : 新的文件拥有者的使用者组(group)</li>
<li>-c : 显示更改的部分的信息</li>
<li>-f : 忽略错误信息</li>
<li>-h :修复符号链接</li>
<li>-v : 显示详细的处理信息</li>
<li>-R : 处理指定目录以及其子目录下的所有文件</li>
<li>—help : 显示辅助说明</li>
<li>—version : 显示版本</li>
</ul>
<h4 id="实例"><a href="#实例" class="headerlink" title="实例"></a>实例</h4><p>将文件 file1.txt 的拥有者设为 runoob，群体的使用者 runoobgroup :</p>
<pre><code class="hljs shell">chown runoob:runoobgroup file1.txt</code></pre>
<h3 id="cmp"><a href="#cmp" class="headerlink" title="cmp"></a>cmp</h3><p>比较两个文件是否有差异。当相互比较的两个文件完全一样时，则该指令不会显示任何信息。</p>
<h4 id="语法-3"><a href="#语法-3" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">cmp [-clsv][-i &lt;字符数目&gt;][--help][第一个文件][第二个文件]</code></pre>
<h4 id="参数-3"><a href="#参数-3" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-c 　除了标明差异处的十进制字码之外，一并显示该字符所对应字符。</li>
<li>-l 　标示出所有不一样的地方。</li>
<li>-s 　不显示错误信息。</li>
</ul>
<h3 id="diff"><a href="#diff" class="headerlink" title="diff"></a>diff</h3><p>以逐行的方式，比较文本文件的异同处。</p>
<h4 id="语法-4"><a href="#语法-4" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">diff [-abBcdefHilnNpPqrstTuvwy][-&lt;行数&gt;][-C &lt;行数&gt;][-D &lt;巨集名称&gt;][-I &lt;字符或字符串&gt;][-S &lt;文件&gt;][-W &lt;宽度&gt;][-x &lt;文件或目录&gt;][-X &lt;文件&gt;][--help][--left-column][--suppress-common-line][文件或目录1][文件或目录2]</code></pre>
<h4 id="实例-1"><a href="#实例-1" class="headerlink" title="实例"></a>实例</h4><p><strong>并排格式输出</strong></p>
<pre><code class="hljs shell">[root@localhost test3]# diff log2014.log log2013.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2014-03               | 2013-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-07               | 2013-08
2013-09                 2013-09
2013-10                 2013-10
2013-11               &lt;
2013-12               &lt;
[root@localhost test3]# diff log2013.log log2014.log  -y -W 50
2013-01                 2013-01
2013-02                 2013-02
2013-03               | 2014-03
2013-04                 2013-04
2013-05                 2013-05
2013-06                 2013-06
2013-07                 2013-07
2013-08               | 2013-07
2013-09                 2013-09
2013-10                 2013-10
                      &gt; 2013-11
                      &gt; 2013-12</code></pre>
<h3 id="find"><a href="#find" class="headerlink" title="find"></a>find</h3><p>在指定目录下查找文件。</p>
<h4 id="语法-5"><a href="#语法-5" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">find   path   -option   [   -print ]   [ -exec   -ok   command ]   &#123;&#125; \;</code></pre>
<h4 id="参数-4"><a href="#参数-4" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-amin n : 在过去 n 分钟内被读取过</li>
<li>-cmin n : 在过去 n 分钟内被修改过</li>
</ul>
<h3 id="head"><a href="#head" class="headerlink" title="head"></a>head</h3><p>查看文件的开头部分的内容，有一个常用的参数 <strong>-n</strong> 用于显示行数，默认为 10，即显示 10 行的内容。</p>
<h4 id="参数-5"><a href="#参数-5" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-q 隐藏文件名</li>
<li>-v 显示文件名</li>
<li>-c&lt;数目&gt; 显示的字节数。</li>
<li>-n&lt;行数&gt; 显示的行数。</li>
</ul>
<h3 id="ln"><a href="#ln" class="headerlink" title="ln"></a>ln</h3><p>为某一个文件在另外一个位置建立一个同步的链接</p>
<h4 id="语法-6"><a href="#语法-6" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">ln [参数][源文件或目录][目标文件或目录]</code></pre>
<h4 id="参数-6"><a href="#参数-6" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-s 软链接(符号链接)</li>
</ul>
<h4 id="实例-2"><a href="#实例-2" class="headerlink" title="实例"></a>实例</h4><p>给文件创建软链接</p>
<pre><code class="hljs shell">ln -s log2013.log link2013</code></pre>
<p>给文件创建硬链接</p>
<pre><code class="hljs shell">ln log2013.log ln2013</code></pre>
<h3 id="less"><a href="#less" class="headerlink" title="less"></a>less</h3><p>浏览文件</p>
<h4 id="语法-7"><a href="#语法-7" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">less [参数] 文件</code></pre>
<h4 id="参数-7"><a href="#参数-7" class="headerlink" title="参数"></a>参数</h4><ul>
<li>b 向上翻一页</li>
<li>d 向后翻半页</li>
<li>Q 退出less 命令</li>
<li>-e 当文件显示结束后，自动离开</li>
<li>-f 强迫打开特殊文件，例如外围设备代号、目录和二进制文件</li>
<li>-m 显示类似more命令的百分比</li>
<li>-N 显示每行的行号</li>
<li>-s 显示连续空行为一行</li>
<li>/字符串：向下搜索”字符串”的功能</li>
<li>?字符串：向上搜索”字符串”的功能</li>
</ul>
<h3 id="locate"><a href="#locate" class="headerlink" title="locate"></a>locate</h3><p>查找符合条件的文档，他会去保存文档和目录名称的数据库内，查找合乎范本样式条件的文档或目录。</p>
<p>locate与find 不同: find 是去硬盘找，locate 只在/var/lib/slocate资料库中找。</p>
<p>locate的速度比find快，它并不是真的查找，而是查数据库，一般文件数据库在/var/lib/slocate/slocate.db中，所以locate的查找并不是实时的，而是以数据库的更新为准，一般是系统自己维护，也可以手工升级数据库。</p>
<pre><code class="hljs shell">locate -u</code></pre>
<h4 id="语法-8"><a href="#语法-8" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">locate [-d ][--help][--version][范本样式...]</code></pre>
<h4 id="参数-8"><a href="#参数-8" class="headerlink" title="参数"></a>参数</h4><p>-d或—database= 配置locate指令使用的数据库。locate指令预设的数据库位于/var/lib/slocate目录里，文档名为slocate.db，您可使用 这个参数另行指定。</p>
<h3 id="mv"><a href="#mv" class="headerlink" title="mv"></a>mv</h3><p>为文件或目录改名、或将文件或目录移入其它位置。</p>
<h4 id="语法-9"><a href="#语法-9" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">mv [options] source dest
mv [options] source... directory</code></pre>
<h4 id="参数-9"><a href="#参数-9" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-i: 若指定目录已有同名文件，则先询问是否覆盖旧文件;</li>
<li>-f: 在 mv 操作要覆盖某已有的目标文件时不给任何指示;</li>
</ul>
<h3 id="rm"><a href="#rm" class="headerlink" title="rm"></a>rm</h3><p>用于删除一个文件或者目录。</p>
<h4 id="语法-10"><a href="#语法-10" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">rm [options] name...</code></pre>
<h4 id="参数-10"><a href="#参数-10" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-i 删除前逐一询问确认。</li>
<li>-f 即使原档案属性设为唯读，亦直接删除，无需逐一确认。</li>
<li>-r 将目录及以下之档案亦逐一删除。</li>
</ul>
<h3 id="touch"><a href="#touch" class="headerlink" title="touch"></a>touch</h3><p>修改文件或者目录的时间属性，包括存取时间和更改时间。若文件不存在，系统会建立一个新的文件。</p>
<h4 id="语法-11"><a href="#语法-11" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">touch [-acfm][-d&lt;日期时间&gt;][-r&lt;参考文件或目录&gt;] [-t&lt;日期时间&gt;][--help][--version][文件或目录…]</code></pre>
<h3 id="grep"><a href="#grep" class="headerlink" title="grep"></a>grep</h3><p>查找文件里符合条件的字符串。</p>
<h4 id="语法-12"><a href="#语法-12" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">grep [-abcEFGhHilLnqrsvVwxy][-A&lt;显示列数&gt;][-B&lt;显示列数&gt;][-C&lt;显示列数&gt;][-d&lt;进行动作&gt;][-e&lt;范本样式&gt;][-f&lt;范本文件&gt;][--help][范本样式][文件或目录...]</code></pre>
<h4 id="实例-3"><a href="#实例-3" class="headerlink" title="实例"></a>实例</h4><pre><code class="hljs shell">grep 'test' testfile.txt</code></pre>
<h3 id="wc"><a href="#wc" class="headerlink" title="wc"></a>wc</h3><p>计算文件的Byte数、字数、或是列数</p>
<h4 id="语法-13"><a href="#语法-13" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">wc [-clw][--help][--version][文件...]</code></pre>
<h4 id="参数-11"><a href="#参数-11" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-c 只显示Bytes数。</li>
<li>-l 只显示行数。</li>
<li>-w 只显示字数。</li>
</ul>
<h2 id="磁盘管理"><a href="#磁盘管理" class="headerlink" title="磁盘管理"></a>磁盘管理</h2><h3 id="df"><a href="#df" class="headerlink" title="df"></a>df</h3><p>显示目前在Linux系统上的文件系统的磁盘使用情况统计。</p>
<h4 id="语法-14"><a href="#语法-14" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">df [选项]... [FILE]...</code></pre>
<h4 id="参数-12"><a href="#参数-12" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-h 使用人类可读的格式</li>
<li>-a 包含所有的具有 0 Blocks 的文件系统</li>
<li>-i 列出 inode 资讯，不列出已使用 block</li>
</ul>
<h3 id="du"><a href="#du" class="headerlink" title="du"></a>du</h3><p>显示指定的目录或文件所占用的磁盘空间。</p>
<h4 id="语法-15"><a href="#语法-15" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">du [-abcDhHklmsSx][-L &lt;符号连接&gt;][-X &lt;文件&gt;][--block-size][--exclude=&lt;目录或文件&gt;][--max-depth=&lt;目录层数&gt;][--help][--version][目录或文件]</code></pre>
<h4 id="参数-13"><a href="#参数-13" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-a或-all 显示目录中个别文件的大小。</li>
<li>-b或-bytes 显示目录或文件大小时，以byte为单位。</li>
<li>-c或—total 除了显示个别目录或文件的大小外，同时也显示所有目录或文件的总和。</li>
<li>-D或—dereference-args 显示指定符号连接的源文件大小。</li>
<li>-h或—human-readable 以K，M，G为单位，提高信息的可读性。</li>
<li>-H或—si 与-h参数相同，但是K，M，G是以1000为换算单位。</li>
<li>-k或—kilobytes 以1024 bytes为单位。</li>
<li>-l或—count-links 重复计算硬件连接的文件。</li>
<li>-L&lt;符号连接&gt;或—dereference&lt;符号连接&gt; 显示选项中所指定符号连接的源文件大小。</li>
<li>-m或—megabytes 以1MB为单位。</li>
<li>-s或—summarize 仅显示总计。</li>
<li>-S或—separate-dirs 显示个别目录的大小时，并不含其子目录的大小。</li>
<li>-x或—one-file-xystem 以一开始处理时的文件系统为准，若遇上其它不同的文件系统目录则略过。</li>
<li>-X&lt;文件&gt;或—exclude-from=&lt;文件&gt; 在&lt;文件&gt;指定目录或文件。</li>
<li>—exclude=&lt;目录或文件&gt; 略过指定的目录或文件。</li>
<li>—max-depth=&lt;目录层数&gt; 超过指定层数的目录后，予以忽略。</li>
</ul>
<h3 id="mkdir"><a href="#mkdir" class="headerlink" title="mkdir"></a>mkdir</h3><p>建立名称为 dirName 的目录。</p>
<h4 id="语法-16"><a href="#语法-16" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">mkdir [-p] dirName</code></pre>
<h4 id="参数-14"><a href="#参数-14" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-p 确保目录名称存在，不存在的就建一个(建立多级目录)。</li>
</ul>
<h3 id="ls"><a href="#ls" class="headerlink" title="ls"></a>ls</h3><p>显示指定工作目录下之内容</p>
<h4 id="语法-17"><a href="#语法-17" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">ls [-alrtAFR] [name...]</code></pre>
<h4 id="参数-15"><a href="#参数-15" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为”.”的视为隐藏档，不会列出)</li>
<li>-l 除文件名称外，亦将文件型态、权限、拥有者、文件大小等资讯详细列出</li>
<li>-r 将文件以相反次序显示(原定依英文字母次序)</li>
<li>-t 将文件依建立时间之先后次序列出</li>
<li>-A 同 -a ，但不列出 “.” (目前目录) 及 “..” (父目录)</li>
<li>-F 在列出的文件名称后加一符号；例如可执行档则加 “*”, 目录则加 “/“</li>
<li>-R 若目录下有文件，则以下之文件亦皆依序列出</li>
</ul>
<h3 id="dd"><a href="#dd" class="headerlink" title="dd"></a>dd</h3><p>从标准输入或文件中读取数据，根据指定的格式来转换数据，再输出到文件、设备或标准输出。</p>
<h4 id="参数-16"><a href="#参数-16" class="headerlink" title="参数"></a>参数</h4><ul>
<li>if=文件名：输入文件名，默认为标准输入。即指定源文件。</li>
<li>of=文件名：输出文件名，默认为标准输出。即指定目的文件。</li>
<li>ibs=bytes：一次读入bytes个字节，即指定一个块大小为bytes个字节。<br>obs=bytes：一次输出bytes个字节，即指定一个块大小为bytes个字节。<br>bs=bytes：同时设置读入/输出的块大小为bytes个字节。</li>
<li>cbs=bytes：一次转换bytes个字节，即指定转换缓冲区大小。</li>
<li>skip=blocks：从输入文件开头跳过blocks个块后再开始复制。</li>
<li>seek=blocks：从输出文件开头跳过blocks个块后再开始复制。</li>
<li>count=blocks：仅拷贝blocks个块，块大小等于ibs指定的字节数。</li>
<li>conv=&lt;关键字&gt;，关键字可以有以下11种：<ul>
<li>conversion：用指定的参数转换文件。</li>
<li>ascii：转换ebcdic为ascii</li>
<li>ebcdic：转换ascii为ebcdic</li>
<li>ibm：转换ascii为alternate ebcdic</li>
<li>block：把每一行转换为长度为cbs，不足部分用空格填充</li>
<li>unblock：使每一行的长度都为cbs，不足部分用空格填充</li>
<li>lcase：把大写字符转换为小写字符</li>
<li>ucase：把小写字符转换为大写字符</li>
<li>swab：交换输入的每对字节</li>
<li>noerror：出错时不停止</li>
<li>notrunc：不截短输出文件</li>
<li>sync：将每个输入块填充到ibs个字节，不足部分用空（NUL）字符补齐。</li>
</ul>
</li>
</ul>
<h2 id="网络管理"><a href="#网络管理" class="headerlink" title="网络管理"></a>网络管理</h2><h3 id="telnet"><a href="#telnet" class="headerlink" title="telnet"></a>telnet</h3><p>远程登录</p>
<h4 id="语法-18"><a href="#语法-18" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">telnet [-8acdEfFKLrx][-b&lt;主机别名&gt;][-e&lt;脱离字符&gt;][-k&lt;域名&gt;][-l&lt;用户名称&gt;][-n&lt;记录文件&gt;][-S&lt;服务类型&gt;][-X&lt;认证形态&gt;][主机名称或IP地址&lt;通信端口&gt;]</code></pre>
<h4 id="参数-17"><a href="#参数-17" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-a 尝试自动登入远端系统。</li>
<li><p>-b&lt;主机别名&gt; 使用别名指定远端主机名称。</p>
</li>
<li><p>-l&lt;用户名称&gt; 指定要登入远端主机的用户名称。</p>
</li>
</ul>
<h4 id="实例-4"><a href="#实例-4" class="headerlink" title="实例"></a>实例</h4><pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> telnet 192.168.0.5 </span>

//登录IP为 192.168.0.5 的远程主机</code></pre>
<h3 id="netconfig"><a href="#netconfig" class="headerlink" title="netconfig"></a>netconfig</h3><p>设置网络环境。</p>
<h3 id="ifconfig"><a href="#ifconfig" class="headerlink" title="ifconfig"></a>ifconfig</h3><p>显示或设置网络设备。</p>
<h4 id="语法-19"><a href="#语法-19" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">ifconfig [网络设备][down up -allmulti -arp -promisc][add&lt;地址&gt;][del&lt;地址&gt;][&lt;hw&lt;网络设备类型&gt;&lt;硬件地址&gt;][io_addr&lt;I/O地址&gt;][irq&lt;IRQ地址&gt;][media&lt;网络媒介类型&gt;][mem_start&lt;内存地址&gt;][metric&lt;数目&gt;][mtu&lt;字节&gt;][netmask&lt;子网掩码&gt;][tunnel&lt;地址&gt;][-broadcast&lt;地址&gt;][-pointopoint&lt;地址&gt;][IP地址]</code></pre>
<h4 id="实例-5"><a href="#实例-5" class="headerlink" title="实例"></a>实例</h4><p>启动关闭指定网卡</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 down</span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 up</span></code></pre>
<p>为网卡配置和删除IPv6地址</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 add 33ffe:3240:800:1005::2/ 64 //为网卡设置IPv6地址</span>

<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 del 33ffe:3240:800:1005::2/ 64 //为网卡删除IPv6地址</span></code></pre>
<p>用ifconfig修改MAC地址</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 down //关闭网卡</span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE //修改MAC地址</span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 up //启动网卡</span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth1 hw ether 00:1D:1C:1D:1E //关闭网卡并修改MAC地址 </span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth1 up //启动网卡</span></code></pre>
<p>配置IP地址</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 192.168.1.56 </span>
//给eth0网卡配置IP地址
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 192.168.1.56 netmask 255.255.255.0 </span>
// 给eth0网卡配置IP地址,并加上子掩码
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 192.168.1.56 netmask 255.255.255.0 broadcast 192.168.1.255</span>
// 给eth0网卡配置IP地址,加上子掩码,加上个广播地址</code></pre>
<p>启用和关闭ARP协议</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 arp  //开启</span>
<span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 -arp  //关闭</span></code></pre>
<p>设置最大传输单元</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> ifconfig eth0 mtu 1500 </span>
//设置能通过的最大数据包大小为 1500 bytes</code></pre>
<h3 id="netstat"><a href="#netstat" class="headerlink" title="netstat"></a>netstat</h3><p>显示网络状态</p>
<h4 id="语法-20"><a href="#语法-20" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">netstat [-acCeFghilMnNoprstuvVwx][-A&lt;网络类型&gt;][--ip]</code></pre>
<h4 id="参数-18"><a href="#参数-18" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-a或—all 显示所有连线中的Socket。</li>
<li>-e或—extend 显示网络其他相关信息。</li>
<li>-g或—groups 显示多重广播功能群组组员名单。</li>
<li>-i或—interfaces 显示网络界面信息表单。</li>
<li>-l或—listening 显示监控中的服务器的Socket。</li>
<li>-n或—numeric 直接使用IP地址，而不通过域名服务器。</li>
<li>-o或—timers 显示计时器。</li>
<li>-p或—programs 显示正在使用Socket的程序识别码和程序名称。</li>
<li>-r或—route 显示Routing Table。</li>
<li>-s或—statistics 显示网络工作信息统计表。</li>
<li>-t或—tcp 显示TCP传输协议的连线状况。</li>
<li>-u或—udp 显示UDP传输协议的连线状况。</li>
</ul>
<h3 id="ping"><a href="#ping" class="headerlink" title="ping"></a>ping</h3><p>使用ICMP传输协议，发出要求回应的信息，若远端主机的网络功能没有问题，就会回应该信息，因而得知该主机运作正常。</p>
<h4 id="语法-21"><a href="#语法-21" class="headerlink" title="语法"></a>语法</h4><pre><code class="hljs shell">ping [-dfnqrRv][-c&lt;完成次数&gt;][-i&lt;间隔秒数&gt;][-I&lt;网络界面&gt;][-l&lt;前置载入&gt;][-p&lt;范本样式&gt;][-s&lt;数据包大小&gt;][-t&lt;存活数值&gt;][主机名称或IP地址]</code></pre>
<h4 id="参数-19"><a href="#参数-19" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-c&lt;完成次数&gt; 设置完成要求回应的次数。</li>
<li>-f 极限检测。</li>
<li>-i&lt;间隔秒数&gt; 指定收发信息的间隔时间。</li>
<li>-I&lt;网络界面&gt; 使用指定的网络接口送出数据包。</li>
<li>-l&lt;前置载入&gt; 设置在送出要求信息之前，先行发出的数据包。</li>
<li>-n 只输出数值。</li>
<li>-p&lt;范本样式&gt; 设置填满数据包的范本样式。</li>
<li>-q 不显示指令执行过程，开头和结尾的相关信息除外。</li>
<li>-r 忽略普通的Routing Table，直接将数据包送到远端主机上。</li>
<li>-R 记录路由过程。</li>
<li>-s&lt;数据包大小&gt; 设置数据包的大小。</li>
<li>-t&lt;存活数值&gt; 设置存活数值TTL的大小。</li>
<li>-v 详细显示指令的执行过程。</li>
</ul>
<h3 id="traceroute"><a href="#traceroute" class="headerlink" title="traceroute"></a>traceroute</h3><p>显示数据包到主机间的路径。</p>
<h3 id="tty"><a href="#tty" class="headerlink" title="tty"></a>tty</h3><p>显示终端机连接标准输入设备的文件名称。</p>
<h2 id="系统管理"><a href="#系统管理" class="headerlink" title="系统管理"></a>系统管理</h2><h3 id="adduser"><a href="#adduser" class="headerlink" title="adduser"></a>adduser</h3><p>新增使用者帐号或更新预设的使用者资料。</p>
<h4 id="实例-6"><a href="#实例-6" class="headerlink" title="实例"></a>实例</h4><p>添加一个一般用户</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> useradd kk //添加用户kk</span></code></pre>
<p>为添加的用户指定相应的用户组</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> useradd -g root kk //添加用户kk，并指定用户所在的组为root用户组</span></code></pre>
<p>创建一个系统用户</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> useradd -r kk //创建一个系统用户kk</span></code></pre>
<p>为新添加的用户指定/home目录</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> useradd<span class="hljs-_">-d</span> /home/myf kk //新添加用户kk，其home目录为/home/myf</span>
//当用户名kk登录主机时，系统进入的默认目录为/home/myf</code></pre>
<h3 id="date"><a href="#date" class="headerlink" title="date"></a>date</h3><p>显示或设定系统的日期与时间。</p>
<h3 id="kill"><a href="#kill" class="headerlink" title="kill"></a>kill</h3><p>删除执行中的程序或工作。</p>
<h4 id="实例-7"><a href="#实例-7" class="headerlink" title="实例"></a>实例</h4><p>杀死进程</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> <span class="hljs-built_in">kill</span> 12345</span></code></pre>
<p>强制杀死进程</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> <span class="hljs-built_in">kill</span> -KILL 123456</span></code></pre>
<p>发送SIGHUP信号，可以使用一下信号</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> <span class="hljs-built_in">kill</span> -HUP pid</span></code></pre>
<p>彻底杀死进程</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> <span class="hljs-built_in">kill</span> -9 123456</span></code></pre>
<p>显示信号</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"> <span class="hljs-built_in">kill</span> -l</span>
1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX</code></pre>
<p>杀死指定用户所有进程</p>
<pre><code class="hljs shell"><span class="hljs-meta">#</span><span class="bash"><span class="hljs-built_in">kill</span> -9 $(ps -ef | grep hnlinux) //方法一 过滤出hnlinux用户进程 </span>
<span class="hljs-meta">#</span><span class="bash"><span class="hljs-built_in">kill</span> -u hnlinux //方法二</span></code></pre>
<h3 id="ps"><a href="#ps" class="headerlink" title="ps"></a>ps</h3><p>显示当前进程 (process) 的状态。</p>
<h4 id="参数-20"><a href="#参数-20" class="headerlink" title="参数"></a>参数</h4><ul>
<li>-A 列出所有的行程</li>
<li>-w 显示加宽可以显示较多的资讯</li>
<li>-au 显示较详细的资讯</li>
<li>-aux 显示所有包含其他使用者的行程</li>
<li>-ef 显示所有命令，带命令行</li>
</ul>
<h3 id="top"><a href="#top" class="headerlink" title="top"></a>top</h3><p>实时显示 process 的动态。</p>
<h3 id="uname"><a href="#uname" class="headerlink" title="uname"></a>uname</h3><p>显示系统信息。</p>
<h4 id="参数-21"><a href="#参数-21" class="headerlink" title="参数"></a>参数</h4><ul>
<li>a或—all 　显示全部的信息。</li>
<li>-m或—machine 　显示电脑类型。</li>
<li>-n或-nodename 　显示在网络上的主机名称。</li>
<li>-r或—release 　显示操作系统的发行编号。</li>
<li>-s或—sysname 　显示操作系统名称。</li>
<li>-v 　显示操作系统的版本。</li>
</ul>
<h3 id="export"><a href="#export" class="headerlink" title="export"></a>export</h3><p>设置或显示环境变量。</p>
<h3 id="passwd"><a href="#passwd" class="headerlink" title="passwd"></a>passwd</h3><p>用来更改使用者的密码</p>
<h2 id="参考文献"><a href="#参考文献" class="headerlink" title="参考文献"></a>参考文献</h2><p><a href="https://www.runoob.com/linux/linux-command-manual.html" target="_blank" rel="noopener">Linux命令大全</a></p>

            </article>
            <hr>
            <div>
              <div class="post-metas mb-3">
                
                  <div class="post-meta mr-3">
                    <i class="iconfont icon-category"></i>
                    
                      <a class="hover-with-bg" href="/michuanblog/categories/%E9%9D%A2%E8%AF%95/">面试</a>
                    
                  </div>
                
                
                  <div class="post-meta">
                    <i class="iconfont icon-tags"></i>
                    
                      <a class="hover-with-bg" href="/michuanblog/tags/%E9%9D%A2%E8%AF%95/">面试</a>
                    
                      <a class="hover-with-bg" href="/michuanblog/tags/Linux/">Linux</a>
                    
                  </div>
                
              </div>
              
                <p class="note note-warning">本博客所有文章除特别声明外，均采用 <a href="https://creativecommons.org/licenses/by-sa/4.0/deed.zh" target="_blank" rel="nofollow noopener noopener">CC BY-SA 4.0 协议</a> ，转载请注明出处！</p>
              
              
                <div class="post-prevnext row">
                  <div class="post-prev col-6">
                    
                    
                      <a href="/michuanblog/2020/08/18/LeetCodede-DataBase/">
                        <i class="iconfont icon-arrowleft"></i>
                        <span class="hidden-mobile">LeetCodede_DataBase</span>
                        <span class="visible-mobile">上一篇</span>
                      </a>
                    
                  </div>
                  <div class="post-next col-6">
                    
                    
                      <a href="/michuanblog/2020/08/14/50%E9%81%93SQL%E6%9F%A5%E8%AF%A2%E8%AF%AD%E5%8F%A5%E7%BB%83%E4%B9%A0/">
                        <span class="hidden-mobile">50道SQL查询语句练习</span>
                        <span class="visible-mobile">下一篇</span>
                        <i class="iconfont icon-arrowright"></i>
                      </a>
                    
                  </div>
                </div>
              
            </div>

            
              <!-- Comments -->
              <div class="comments" id="comments">
                
                
  <div id="vcomments"></div>
  <script type="text/javascript">
    function loadValine() {
      addScript('https://cdn.staticfile.org/valine/1.4.14/Valine.min.js', function () {
        new Valine({
          el: "#vcomments",
          app_id: "tKy1BysLG32PuX7L8s0rQi9C-gzGzoHsz",
          app_key: "wlDiPjGWwM0U49QD4CpxH5dz",
          placeholder: "说点什么",
          path: window.location.pathname,
          avatar: "retro",
          meta: ["nick","mail","link"],
          pageSize: "10",
          lang: "zh-CN",
          highlight: false,
          recordIP: false,
          serverURLs: "",
        });
      });
    }
    createObserver(loadValine, 'vcomments');
  </script>
  <noscript>Please enable JavaScript to view the <a href="https://valine.js.org" target="_blank" rel="nofollow noopener noopener">comments
      powered by Valine.</a></noscript>


              </div>
            
          </div>
        </div>
      </div>
    </div>
    
      <div class="d-none d-lg-block col-lg-2 toc-container" id="toc-ctn">
        <div id="toc">
  <p class="toc-header"><i class="iconfont icon-list"></i>&nbsp;目录</p>
  <div id="tocbot"></div>
</div>

      </div>
    
  </div>
</div>

<!-- Custom -->


    
  </main>

  
    <a id="scroll-top-button" href="#" role="button">
      <i class="iconfont icon-arrowup" aria-hidden="true"></i>
    </a>
  

  
    <div class="modal fade" id="modalSearch" tabindex="-1" role="dialog" aria-labelledby="ModalLabel"
     aria-hidden="true">
  <div class="modal-dialog modal-dialog-scrollable modal-lg" role="document">
    <div class="modal-content">
      <div class="modal-header text-center">
        <h4 class="modal-title w-100 font-weight-bold">搜索</h4>
        <button type="button" id="local-search-close" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body mx-3">
        <div class="md-form mb-5">
          <input type="text" id="local-search-input" class="form-control validate">
          <label data-error="x" data-success="v"
                 for="local-search-input">关键词</label>
        </div>
        <div class="list-group" id="local-search-result"></div>
      </div>
    </div>
  </div>
</div>
  

  
    <!-- APlayer 音乐播放器 -->
    <div id="aplayer"></div>
    <script defer src="https://cdn.staticfile.org/aplayer/1.10.1/APlayer.min.js" ></script>
<link  rel="stylesheet" href="https://cdn.staticfile.org/aplayer/1.10.1/APlayer.min.css" />
<script type="text/javascript">
  var oldLoadAp = window.onload;
  window.onload = function () {
    oldLoadAp && oldLoadAp();

    new APlayer({
      container: document.getElementById('aplayer'),
      fixed: true,
      autoplay: 'false' === 'true',
      loop: 'all',
      order: 'random',
      theme: '#b7daff',
      preload: 'none',
      audio: [{"name":"黄杨扁担","artist":"鹿女王","url":"http://mi_chuan.gitee.io/blog/黄杨扁担.mp3","cover":"http://mi_chuan.gitee.io/blog/黄杨扁担.png"},{"name":"隔世信","artist":"以冬","url":"http://mi_chuan.gitee.io/blog/隔世信.mp3","cover":"http://mi_chuan.gitee.io/blog/隔世信.jpg"}]
    });
  }
</script>

  

  

  <footer class="mt-5">
  <div class="text-center py-3">
    <div>
      <a href="https://hexo.io" target="_blank" rel="nofollow noopener"><span>Hexo</span></a>
      <i class="iconfont icon-love"></i>
      <a href="https://github.com/fluid-dev/hexo-theme-fluid" target="_blank" rel="nofollow noopener">
        <span>Fluid</span></a>
    </div>
    

    

    
  </div>
</footer>

<!-- SCRIPTS -->
<script  src="https://cdn.staticfile.org/jquery/3.4.1/jquery.min.js" ></script>
<script  src="https://cdn.staticfile.org/twitter-bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script  src="/michuanblog/js/debouncer.js" ></script>
<script  src="/michuanblog/js/main.js" ></script>

<!-- Plugins -->


  
    <script  src="/michuanblog/js/lazyload.js" ></script>
  



  <script defer src="https://cdn.staticfile.org/clipboard.js/2.0.6/clipboard.min.js" ></script>
  <script  src="/michuanblog/js/clipboard-use.js" ></script>







  <script  src="https://cdn.staticfile.org/tocbot/4.11.1/tocbot.min.js" ></script>
  <script>
    $(document).ready(function () {
      var boardCtn = $('#board-ctn');
      var boardTop = boardCtn.offset().top;

      tocbot.init({
        tocSelector: '#tocbot',
        contentSelector: 'article.markdown-body',
        headingSelector: 'h1,h2,h3,h4,h5,h6',
        linkClass: 'tocbot-link',
        activeLinkClass: 'tocbot-active-link',
        listClass: 'tocbot-list',
        isCollapsedClass: 'tocbot-is-collapsed',
        collapsibleClass: 'tocbot-is-collapsible',
        collapseDepth: 0,
        scrollSmooth: true,
        headingsOffset: -boardTop
      });
      if ($('.toc-list-item').length > 0) {
        $('#toc').css('visibility', 'visible');
      }
    });
  </script>



  <script  src="https://cdn.staticfile.org/typed.js/2.0.11/typed.min.js" ></script>
  <script>
    var typed = new Typed('#subtitle', {
      strings: [
        '  ',
        "Linux常用命令&nbsp;",
      ],
      cursorChar: "_",
      typeSpeed: 70,
      loop: false,
    });
    typed.stop();
    $(document).ready(function () {
      $(".typed-cursor").addClass("h2");
      typed.start();
    });
  </script>



  <script  src="https://cdn.staticfile.org/anchor-js/4.2.2/anchor.min.js" ></script>
  <script>
    anchors.options = {
      placement: "right",
      visible: "hover",
      
    };
    var el = "h1,h2,h3,h4,h5,h6".split(",");
    var res = [];
    for (item of el) {
      res.push(".markdown-body > " + item)
    }
    anchors.add(res.join(", "))
  </script>



  <script  src="/michuanblog/js/local-search.js" ></script>
  <script>
    var path = "/michuanblog/local-search.xml";
    var inputArea = document.querySelector("#local-search-input");
    inputArea.onclick = function () {
      searchFunc(path, 'local-search-input', 'local-search-result');
      this.onclick = null
    }
  </script>



  <script  src="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.js" ></script>
  <link  rel="stylesheet" href="https://cdn.staticfile.org/fancybox/3.5.7/jquery.fancybox.min.css" />

  <script>
    $('#post img:not(.no-zoom img, img[no-zoom]), img[zoom]').each(
      function () {
        var element = document.createElement('a');
        $(element).attr('data-fancybox', 'images');
        $(element).attr('href', $(this).attr('src'));
        $(this).wrap(element);
      }
    );
  </script>





  

  
    <!-- MathJax -->
    <script>
      MathJax = {
        tex: {
          inlineMath: [['$', '$'], ['\\(', '\\)']]
        },
        options: {
          renderActions: {
            findScript: [10, doc => {
              document.querySelectorAll('script[type^="math/tex"]').forEach(node => {
                const display = !!node.type.match(/; *mode=display/);
                const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], display);
                const text = document.createTextNode('');
                node.parentNode.replaceChild(text, node);
                math.start = { node: text, delim: '', n: 0 };
                math.end = { node: text, delim: '', n: 0 };
                doc.math.push(math);
              });
            }, '', false],
            insertedScript: [200, () => {
              document.querySelectorAll('mjx-container').forEach(node => {
                let target = node.parentNode;
                if (target.nodeName.toLowerCase() === 'li') {
                  target.parentNode.classList.add('has-jax');
                }
              });
            }, '', false]
          }
        }
      };
    </script>

    <script async src="https://cdn.staticfile.org/mathjax/3.0.5/es5/tex-svg.js" ></script>

  



  
  
    <script>
      !function (e, t, a) {
        function r() {
          for (var e = 0; e < s.length; e++) s[e].alpha <= 0 ? (t.body.removeChild(s[e].el), s.splice(e, 1)) : (s[e].y--, s[e].scale += .004, s[e].alpha -= .013, s[e].el.style.cssText = "left:" + s[e].x + "px;top:" + s[e].y + "px;opacity:" + s[e].alpha + ";transform:scale(" + s[e].scale + "," + s[e].scale + ") rotate(45deg);background:" + s[e].color + ";z-index:99999");
          requestAnimationFrame(r)
        }

        function n() {
          var t = "function" == typeof e.onclick && e.onclick;
          e.onclick = function (e) {
            t && t(), o(e)
          }
        }

        function o(e) {
          var a = t.createElement("div");
          a.className = "heart", s.push({
            el: a,
            x: e.clientX - 5,
            y: e.clientY - 5,
            scale: 1,
            alpha: 1,
            color: c()
          }), t.body.appendChild(a)
        }

        function i(e) {
          var a = t.createElement("style");
          a.type = "text/css";
          try {
            a.appendChild(t.createTextNode(e))
          } catch (t) {
            a.styleSheet.cssText = e
          }
          t.getElementsByTagName("head")[0].appendChild(a)
        }

        function c() {
          return "rgb(" + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + "," + ~~(255 * Math.random()) + ")"
        }

        var s = [];
        e.requestAnimationFrame = e.requestAnimationFrame || e.webkitRequestAnimationFrame || e.mozRequestAnimationFrame || e.oRequestAnimationFrame || e.msRequestAnimationFrame || function (e) {
          setTimeout(e, 1e3 / 60)
        }, i(".heart{width: 10px;height: 10px;position: fixed;background: #f00;transform: rotate(45deg);-webkit-transform: rotate(45deg);-moz-transform: rotate(45deg);}.heart:after,.heart:before{content: '';width: inherit;height: inherit;background: inherit;border-radius: 50%;-webkit-border-radius: 50%;-moz-border-radius: 50%;position: fixed;}.heart:after{top: -5px;}.heart:before{left: -5px;}"), n(), r()
      }(window, document);
    </script>
  








  <script  src="https://cdn.staticfile.org/mermaid/8.5.0/mermaid.min.js" ></script>
  <script>
    if (window.mermaid) {
      mermaid.initialize({"theme":"default"});
    }
  </script>







<script src="/michuanblog/live2dw/lib/L2Dwidget.min.js?094cbace49a39548bed64abff5988b05"></script><script>L2Dwidget.init({"log":false,"pluginJsPath":"lib/","pluginModelPath":"assets/","pluginRootPath":"live2dw/","tagMode":false});</script></body>
</html>
